package com.qj.yantaishan.domain;

import java.math.BigDecimal;
import java.util.List;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.qj.yantaishan.vo.ReturnOrderVo;
import com.qj.yantaishan.vo.ReturnProductVo;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.qj.yantaishan.common.annotation.Excel;
import com.qj.yantaishan.common.core.domain.BaseEntity;

/**
 * 退款对象 shanglala_return
 *
 * @author qihe
 * @date 2022-07-22
 */
@Data
public class Return {
    private static final long serialVersionUID = 1L;

    /**
     * $column.columnComment
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 退货单号，分销订单退货单号统一
     */
    @Excel(name = "退货单号，分销订单退货单号统一")
    private String returnNo;

    /**
     * 退货申请时间
     */
    @Excel(name = "退货申请时间")
    private Long dateline;

    /**
     * 订单ID号
     */
    @Excel(name = "订单ID号")
    private Long orderId;

    /**
     * 订单号
     */
    @Excel(name = "订单号")
    private String orderNo;

    /**
     * 当退货时，记录当时订单表的status
     */
    @Excel(name = "当退货时，记录当时订单表的status")
    private Integer orderStatus;

    /**
     * 退货类型，1、买/卖双方协商一致，2、买错/多买/不想要，3、商品质量问题，4、未到货品，5、其它
     */
    @Excel(name = "退货类型，1、买/卖双方协商一致，2、买错/多买/不想要，3、商品质量问题，4、未到货品，5、其它")
    private Integer type;

    /**
     * 退货人的联系方式
     */
    @Excel(name = "退货人的联系方式")
    private String phone;

    /**
     * 退货说明
     */
    @Excel(name = "退货说明")
    private String content;

    /**
     * 图片列表，图片数组序列化
     */
    @Excel(name = "图片列表，图片数组序列化")
    private String images;

    /**
     * 申请状态，1：申请中，2：商家审核不通过，3：商家审核通过，4：退货物流，5：退货完成，6：退货取消
     */
    @Excel(name = "申请状态，1：申请中，2：商家审核不通过，3：商家审核通过，4：退货物流，5：退货完成，6：退货取消")
    private Integer status;

    /**
     * 商家不同意退款时间
     */
    @Excel(name = "商家不同意退款时间")
    private Long cancelDateline;

    /**
     * 取消退货时间
     */
    @Excel(name = "取消退货时间")
    private Long userCancelDateline;

    /**
     * 商家不同意退款说明
     */
    @Excel(name = "商家不同意退款说明")
    private String storeContent;

    /**
     * 物流方式 express快递发货 selffetch亲自送货
     */
    @Excel(name = "物流方式 express快递发货 selffetch亲自送货")
    private String shippingMethod;

    /**
     * 快递公司代码
     */
    @Excel(name = "快递公司代码")
    private String expressCode;

    /**
     * 快递公司
     */
    @Excel(name = "快递公司")
    private String expressCompany;

    /**
     * 快递单号
     */
    @Excel(name = "快递单号")
    private String expressNo;

    /**
     * 收货详细地址
     */
    @Excel(name = "收货详细地址")
    private String address;

    /**
     * 收货人
     */
    @Excel(name = "收货人")
    private String addressUser;

    /**
     * 收货人电话
     */
    @Excel(name = "收货人电话")
    private String addressTel;

    /**
     * 产品退货的费用
     */
    @Excel(name = "产品退货的费用")
    private BigDecimal productMoney;


    /**
     * 店铺ID
     */
    @Excel(name = "店铺ID")
    private Long storeId;

    /**
     * 用户UID
     */
    @Excel(name = "用户UID")
    private Long uid;

    /**
     * 是否包含分销商品 0 否 1是
     */
    @Excel(name = "是否包含分销商品 0 否 1是")
    private Integer isFx;

    /**
     * 用户申请退货单ID，
     */
    @Excel(name = "用户申请退货单ID，")
    private Long userReturnId;

    /**
     * 票联子订单ID
     */
    @Excel(name = "票联子订单ID")
    private Integer ticketId;

    /**
     * 退货商品是否已发货 0 未发货 1 已发货
     */
    @Excel(name = "退货商品是否已发货 0 未发货 1 已发货")
    private Integer isDelivered;

    /**
     * 0 未处理 1 已退款 2 退款取消 3 等待平台退款
     */
    @Excel(name = "0 未处理 1 已退款 2 退款取消 3 等待平台退款")
    private Integer refundStatus;

    /**
     * 退款处理时间
     */
    @Excel(name = "退款处理时间")
    private Long refundTime;

    /**
     * 退款处理者 0 商家 大于0平台管理账号
     */
    @Excel(name = "退款处理者 0 商家 大于0平台管理账号")
    private Long refundProcessor;

    /**
     * 退款方式 1 退货退款 2 仅退款不退货
     */
    @Excel(name = "退款方式 1 退货退款 2 仅退款不退货")
    private Integer method;

    /**
     * 退货商品回寄有效时间，过期未回寄退货自动取消
     */
    @Excel(name = "退货商品回寄有效时间，过期未回寄退货自动取消")
    private Long sendBackTime;

    /**
     * 是否为赠品
     */
    @Excel(name = "是否为赠品")
    private Integer isPresent;

    /**
     * wait同意退款后等待执行退款；success已执行退款【定时/PC平台手动】
     */
    @Excel(name = "wait同意退款后等待执行退款；success已执行退款【定时/PC平台手动】")
    private String crontabStatus;

    /**
     * 是否为批发订单
     */
    @Excel(name = "是否为批发订单")
    private Integer isWholesale;
    /**
     * 订单概况
     */
    @TableField(exist = false)
    private List<ReturnOrderVo> returnOrderVos;
    /**
     * 订单商品
     */
    @TableField(exist = false)
    private List<ReturnProductVo> returnProductVos;

    public void setId(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setReturnNo(String returnNo) {
        this.returnNo = returnNo;
    }

    public String getReturnNo() {
        return returnNo;
    }

    public void setDateline(Long dateline) {
        this.dateline = dateline;
    }

    public Long getDateline() {
        return dateline;
    }

    public void setOrderId(Long orderId) {
        this.orderId = orderId;
    }

    public Long getOrderId() {
        return orderId;
    }

    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }

    public String getOrderNo() {
        return orderNo;
    }

    public void setOrderStatus(Integer orderStatus) {
        this.orderStatus = orderStatus;
    }

    public Integer getOrderStatus() {
        return orderStatus;
    }

    public void setType(Integer type) {
        this.type = type;
    }

    public Integer getType() {
        return type;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getPhone() {
        return phone;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getContent() {
        return content;
    }

    public void setImages(String images) {
        this.images = images;
    }

    public String getImages() {
        return images;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Integer getStatus() {
        return status;
    }

    public void setCancelDateline(Long cancelDateline) {
        this.cancelDateline = cancelDateline;
    }

    public Long getCancelDateline() {
        return cancelDateline;
    }

    public void setUserCancelDateline(Long userCancelDateline) {
        this.userCancelDateline = userCancelDateline;
    }

    public Long getUserCancelDateline() {
        return userCancelDateline;
    }

    public void setStoreContent(String storeContent) {
        this.storeContent = storeContent;
    }

    public String getStoreContent() {
        return storeContent;
    }

    public void setShippingMethod(String shippingMethod) {
        this.shippingMethod = shippingMethod;
    }

    public String getShippingMethod() {
        return shippingMethod;
    }

    public void setExpressCode(String expressCode) {
        this.expressCode = expressCode;
    }

    public String getExpressCode() {
        return expressCode;
    }

    public void setExpressCompany(String expressCompany) {
        this.expressCompany = expressCompany;
    }

    public String getExpressCompany() {
        return expressCompany;
    }

    public void setExpressNo(String expressNo) {
        this.expressNo = expressNo;
    }

    public String getExpressNo() {
        return expressNo;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getAddress() {
        return address;
    }

    public void setAddressUser(String addressUser) {
        this.addressUser = addressUser;
    }

    public String getAddressUser() {
        return addressUser;
    }

    public void setAddressTel(String addressTel) {
        this.addressTel = addressTel;
    }

    public String getAddressTel() {
        return addressTel;
    }

    public void setProductMoney(BigDecimal productMoney) {
        this.productMoney = productMoney;
    }

    public BigDecimal getProductMoney() {
        return productMoney;
    }


    public void setStoreId(Long storeId) {
        this.storeId = storeId;
    }

    public Long getStoreId() {
        return storeId;
    }

    public void setUid(Long uid) {
        this.uid = uid;
    }

    public Long getUid() {
        return uid;
    }

    public void setIsFx(Integer isFx) {
        this.isFx = isFx;
    }

    public Integer getIsFx() {
        return isFx;
    }

    public void setUserReturnId(Long userReturnId) {
        this.userReturnId = userReturnId;
    }

    public Long getUserReturnId() {
        return userReturnId;
    }

    public void setTicketId(Integer ticketId) {
        this.ticketId = ticketId;
    }

    public Integer getTicketId() {
        return ticketId;
    }

    public void setIsDelivered(Integer isDelivered) {
        this.isDelivered = isDelivered;
    }

    public Integer getIsDelivered() {
        return isDelivered;
    }

    public void setRefundStatus(Integer refundStatus) {
        this.refundStatus = refundStatus;
    }

    public Integer getRefundStatus() {
        return refundStatus;
    }

    public void setRefundTime(Long refundTime) {
        this.refundTime = refundTime;
    }

    public Long getRefundTime() {
        return refundTime;
    }

    public void setRefundProcessor(Long refundProcessor) {
        this.refundProcessor = refundProcessor;
    }

    public Long getRefundProcessor() {
        return refundProcessor;
    }

    public void setMethod(Integer method) {
        this.method = method;
    }

    public Integer getMethod() {
        return method;
    }

    public void setSendBackTime(Long sendBackTime) {
        this.sendBackTime = sendBackTime;
    }

    public Long getSendBackTime() {
        return sendBackTime;
    }

    public void setIsPresent(Integer isPresent) {
        this.isPresent = isPresent;
    }

    public Integer getIsPresent() {
        return isPresent;
    }

    public void setCrontabStatus(String crontabStatus) {
        this.crontabStatus = crontabStatus;
    }

    public String getCrontabStatus() {
        return crontabStatus;
    }

    public void setIsWholesale(Integer isWholesale) {
        this.isWholesale = isWholesale;
    }

    public Integer getIsWholesale() {
        return isWholesale;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("returnNo", getReturnNo())
                .append("dateline", getDateline())
                .append("orderId", getOrderId())
                .append("orderNo", getOrderNo())
                .append("orderStatus", getOrderStatus())
                .append("type", getType())
                .append("phone", getPhone())
                .append("content", getContent())
                .append("images", getImages())
                .append("status", getStatus())
                .append("cancelDateline", getCancelDateline())
                .append("userCancelDateline", getUserCancelDateline())
                .append("storeContent", getStoreContent())
                .append("shippingMethod", getShippingMethod())
                .append("expressCode", getExpressCode())
                .append("expressCompany", getExpressCompany())
                .append("expressNo", getExpressNo())
                .append("address", getAddress())
                .append("addressUser", getAddressUser())
                .append("addressTel", getAddressTel())
                .append("productMoney", getProductMoney())

                .append("storeId", getStoreId())
                .append("uid", getUid())
                .append("isFx", getIsFx())
                .append("userReturnId", getUserReturnId())
                .append("ticketId", getTicketId())
                .append("isDelivered", getIsDelivered())
                .append("refundStatus", getRefundStatus())
                .append("refundTime", getRefundTime())
                .append("refundProcessor", getRefundProcessor())
                .append("method", getMethod())
                .append("sendBackTime", getSendBackTime())
                .append("isPresent", getIsPresent())
                .append("crontabStatus", getCrontabStatus())
                .append("isWholesale", getIsWholesale())
                .toString();
    }
}
